#include <stdio.h>
#include <ctype.h>
// 用于保存统计结果的结构体
typedef struct{
    int letters;
    int digits;
    int spaces;
}CountResult;
// 声明
CountResult count_char(const char *str);

int main(){

    char str[1024];
    char choice;    // 选择
    do{
    printf("请输入字符串:");
    fgets(str, sizeof(str), stdin);
    
    
    CountResult result = count_char(str);

    
    printf("字母数量：%d\n", result.letters);
    printf("数字数量：%d\n", result.digits);
    printf("空格数量：%d\n", result.spaces);


    printf("是否继续输入?(y/n)");
    scanf(" %c", &choice);
    getchar();  // 清空缓冲区的换行符

    }while(choice == 'y' || choice == 'Y');
    // 有返回值
    
    // 打印结果
    return 0;
}

CountResult count_char(const char *str)
{
    // 用于存储结果
    CountResult count = {0, 0, 0};
    while(*str)
    {
        if(isalpha(*str))   // 判断是否是字母
        {
            count.letters++;
        }else if (isdigit(*str))    // 判断是否是数字
        {
            count.digits++;
        }else if (isspace(*str)) // 判断是否是空格
        {
            count.spaces++;
        }
        str++; // 继续遍历
    }
    // 返回统计结果
    return count;
}
